package tuling.netty.readtime;

import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;

/**
 * @author RenGaoshuai
 * @date 2023/11/30 9:49
 * @description
 */
public class ReadtimeServerHandler extends ChannelInboundHandlerAdapter {



    /**
     * 读取通道中的数据（读取客户端发送过来的数据）
     * @param ctx 上下文
     * @param msg 数据
     * @throws Exception
     */
    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
        System.out.println("服务端接收到客户端发送的消息："+msg);
    }

    /**
     *读取完通道中的数据会出发该方法
     * @param ctx 上下文
     * @throws Exception
     */
    @Override
    public void channelReadComplete(ChannelHandlerContext ctx) throws Exception {
        //将消息写入到通道并刷新（客户端可以读取此通道中的数据）
        ctx.writeAndFlush("HelloClient,I`m server");

    }

    /**
     * 程序出现异常会触发该方法
     * 一般都是关闭通道
     * @param ctx 上下文
     * @param cause 异常
     * @throws Exception
     */
    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
        //关闭通道
        ctx.close();
    }

    @Override
    public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
        System.out.println("chaoshi-server");
    }
}
